package login;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashSet;
import java.util.Scanner;

public class SignUp {
    /**
     *
     * @return
     * 负责人：汤姆猫
     * 让用户输入他的账号和密码和电话号码
     * 判断存放用户文件中是否存在相同
     * 不存在：
     * 把该用户信息加入到文件中
     * 并返回用户名
     * 存在：
     * 打印：XXXXXXXX
     * 返回null
     */

    private static final String USER_FILE_PATH = "File\\User.txt"; // 用户文件路径

    public void signUp( ) {
        System.out.println("-------注册-------");
        try {
            while(true) {
                Scanner scanner = new Scanner(System.in);
                System.out.println("输入用户名：");
                String username = scanner.next();
                HashSet<String> existingUsers = loadExistingUsers(); // 加载已有用户
                if (existingUsers.contains(username)) { // 检查用户名是否已经存在
                    System.out.println("该用户名已被使用,请重新输入");
                    continue;
                } else {
                    System.out.println("输入密码:");

                    String password = scanner.next();
                    System.out.println("输入电话号码:");
                    String phoneNumber = scanner.next();
                    saveNewUser(username, password,phoneNumber);  // 将新用户保存至文件
                    System.out.println("注册成功");
                    break;
                }
            }


        } catch (IOException e) {
            System.err.println("An error occurred while processing user data: " + e.getMessage());
        }
    }
    /**
     * 从文件中加载现有的用户名集合
     *
     * @return 已存在的用户名集合
     * @throws IOException 文件操作异常
     */
    private HashSet<String> loadExistingUsers() throws IOException {
        HashSet<String> users = new HashSet<>();
        if (Files.exists(Paths.get(USER_FILE_PATH))) { // 判断文件是否存在
            Files.lines(Paths.get(USER_FILE_PATH))
                    .map(line -> line.split(":")[0]) // 假设每行格式为 "username:password"
                    .forEach(users::add);
        }
        return users;
    }


    /**
     * 将新用户信息追加到文件中
     * @param username 用户名
     * @param password 密码
     * @throws IOException 文件操作异常
     */
    private void saveNewUser(String username, String password,String phoneNumber){
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(USER_FILE_PATH, true))) {
            writer.write(username + ":" + password+":"+phoneNumber); // 简单存储方式，实际应加密密码
            writer.newLine();
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}